<?php

class WfProveedorEmpresa {
//<editor-fold defaultstate="collapsed" desc="Constantes">
  const NOMBRE_ENTIDAD = "WfProveedorEmpresa";
//</editor-fold>

//<editor-fold defaultstate="collapsed" desc="Campos">
  private $_id;
  private $_rut;
  private $_dv;
  private $_razonSocial;
  private $_nombreFantasia;
  private $_giro;
  private $_direccion;
  private $_comuna;
  private $_ciudad;
  private $_pais;
  private $_idEmpresa;
  private $_existe;
//</editor-fold>

//<editor-fold defaultstate="collapsed" desc="Propiedades">
  public function getId() { return $this->_id; }
  public function setId($value) { $this->_id = $value; }

  public function getRut() { return $this->_rut; }
  public function setRut($value) { $this->_rut = $value; }

  public function getDv() { return $this->_dv; }
  public function setDv($value) { $this->_dv = $value; }

  public function getRazonSocial() { return $this->_razonSocial; }
  public function setRazonSocial($value) { $this->_razonSocial = $value; }

  public function getNombreFantasia() { return $this->_nombreFantasia; }
  public function setNombreFantasia($value) { $this->_nombreFantasia = $value; }

  public function getGiro() { return $this->_giro; }
  public function setGiro($value) { $this->_giro = $value; }

  public function getDireccion() { return $this->_direccion; }
  public function setDireccion($value) { $this->_direccion = $value; }

  public function getComuna() { return $this->_comuna; }
  public function setComuna($value) { $this->_comuna = $value; }

  public function getCiudad() { return $this->_ciudad; }
  public function setCiudad($value) { $this->_ciudad = $value; }

  public function getPais() { return $this->_pais; }
  public function setPais($value) { $this->_pais = $value; }

  public function getIdEmpresa() { return $this->_idEmpresa; }
  public function setIdEmpresa($value) { $this->_idEmpresa = $value; }

  public function getExiste() { return $this->_existe; }
  public function setExiste($value) { $this->_existe = $value; }
//</editor-fold>
  
//<editor-fold defaultstate="collapsed" desc="Metodos Publicos">
  /**
   * constructor
   * @author VSR, 16/05/2012
   */
  public function __construct() {
    try {
        $this->_id = -1;
        $this->_rut = "";
        $this->_dv = "";
        $this->_razonSocial = "";
        $this->_nombreFantasia = "";
        $this->_giro = "";
        $this->_direccion = "";
        $this->_comuna = "";
        $this->_ciudad = "";
        $this->_pais = "";
        $this->_idEmpresa = -1;
        $this->_existe = 0;
    } catch (Exception $e) {
      throw new Exception($e->getMessage());
    }
  }

  /**
   * obtiene registro por su id
   * @author VSR, 16/05/2012
   */
  public function obtenerPorId($id = -1) {
    try {
      //define llamada procedimiento almacenado
      $sp = "CALL spu_WfProveedorEmpresa_ObtenerPorId({id});";

      //reemplaza marcas por valores reales
      $sp = str_replace("{id}", $id, $sp);

      //ejecuta procedimiento
      $arr = Bd::exec($sp);
      $totalRegistros = count($arr);

      //si se encontraron registros entonces se asignan
      if ($totalRegistros > 0) {
        $row = $arr[0];
        $this->_id = ( is_null($row["Id"]) ) ? -1 : $row["Id"];
        $this->_rut = ( is_null($row["Rut"]) ) ? "" : $row["Rut"];
        $this->_dv = ( is_null($row["Dv"]) ) ? "" : $row["Dv"];
        $this->_razonSocial = ( is_null($row["RazonSocial"]) ) ? "" : $row["RazonSocial"];
        $this->_nombreFantasia = ( is_null($row["NombreFantasia"]) ) ? "" : $row["NombreFantasia"];
        $this->_giro = ( is_null($row["Giro"]) ) ? "" : $row["Giro"];
        $this->_direccion = ( is_null($row["Direccion"]) ) ? "" : $row["Direccion"];
        $this->_comuna = ( is_null($row["Comuna"]) ) ? "" : $row["Comuna"];
        $this->_ciudad = ( is_null($row["Ciudad"]) ) ? "" : $row["Ciudad"];
        $this->_pais = ( is_null($row["Pais"]) ) ? "" : $row["Pais"];
        $this->_idEmpresa = ( is_null($row["IdEmpresa"]) ) ? -1 : $row["IdEmpresa"];
        $this->_existe = ($this->_id == -1) ? 0 : 1;
      } else {
        $this->_id = -1;
        $this->_rut = "";
        $this->_dv = "";
        $this->_razonSocial = "";
        $this->_nombreFantasia = "";
        $this->_giro = "";
        $this->_direccion = "";
        $this->_comuna = "";
        $this->_ciudad = "";
        $this->_pais = "";
        $this->_idEmpresa = -1;
        $this->_existe = 0;
      }
    } catch (Exception $e) {
      throw new Exception($e->getMessage());
    }
  }

  /**
   * crea o actualiza un registro
   * @author VSR, 16/05/2012
   */
  public function grabar() {
    try {
      //define llamada procedimiento almacenado
      $sp = "CALL spu_WfProveedorEmpresa_Grabar({id},'{rut}','{dv}','{razonSocial}','{nombreFantasia}','{giro}','{direccion}','{comuna}','{ciudad}','{pais}',{idEmpresa});";

      //reemplaza marcas por valores reales
      $sp = str_replace("{id}", $this->_id, $sp);
      $sp = str_replace("{rut}", $this->_rut, $sp);
      $sp = str_replace("{dv}", $this->_dv, $sp);
      $sp = str_replace("{razonSocial}", $this->_razonSocial, $sp);
      $sp = str_replace("{nombreFantasia}", $this->_nombreFantasia, $sp);
      $sp = str_replace("{giro}", $this->_giro, $sp);
      $sp = str_replace("{direccion}", $this->_direccion, $sp);
      $sp = str_replace("{comuna}", $this->_comuna, $sp);
      $sp = str_replace("{ciudad}", $this->_ciudad, $sp);
      $sp = str_replace("{pais}", $this->_pais, $sp);
      $sp = str_replace("{idEmpresa}", $this->_idEmpresa, $sp);

      //ejecuta procedimiento
      $arr = Bd::exec($sp);
      $totalRegistros = count($arr);

      //si se encontraron registros entonces se asignan
      if ($totalRegistros > 0) {
        $row = $arr[0];
        $this->_id = $row["Id"];
        $this->_existe = 1;
      } else {
        $this->_id = -1;
        $this->_existe = 0;
      }
    } catch (Exception $e) {
      throw new Exception($e->getMessage());
    }
  }

  /**
   * elimina un registro
   * @author VSR, 16/05/2012
   */
  public function eliminar() {
    try {
      //define llamada procedimiento almacenado
      $sp = "CALL spu_WfProveedorEmpresa_Eliminar({id});";

      //reemplaza marcas por valores reales
      $sp = str_replace("{id}", $this->_id, $sp);

      //ejecuta procedimiento
      $arr = Bd::exec($sp);
      $totalRegistros = count($arr);

      //si se encontraron registros entonces se asignan
      $this->_id = -1;
      $this->_existe = 0;
    } catch (Exception $e) {
      throw new Exception($e->getMessage());
    }
  }

  /**
   * destructor
   * @author VSR, 16/05/2012
   */
  public function  __destruct() {
   // destruye el objeto
  }
//</editor-fold>

//<editor-fold defaultstate="collapsed" desc="Metodos Compartidos">
  /**
   * obtiene Listado de proveedores para poder autocompletar la busqueda
   * @param <type> $texto
   * @param <type> $idEmpresa
   * @return string
   * @author VSR, 30/04/2012
   */
  public static function autocompletarProveedor($texto, $idEmpresa) {
    $arr = null;
    try {
      //define llamada procedimiento almacenado
      $sp = "CALL spu_WfProveedorEmpresa_AutocompletarProveedor('{texto}',{idEmpresa});";

      //reemplaza marcas por valores reales
      $sp = str_replace("{texto}", $texto, $sp);
      $sp = str_replace("{idEmpresa}", $idEmpresa, $sp);

      //ejecuta procedimiento
      $arr = Bd::exec($sp);
    } catch (Exception $e) {
      $arr = null;
    }
    return $arr;
  }

  /**
   * verifica si el proveedor esta duplicado
   * @param <type> $idEmpresa
   * @param <type> $idProveedor
   * @param <type> $rutProveedor
   * @param <type> $razonSocial
   * @return string
   * @author VSR, 01/05/2012
   */
  public static function verificarDuplicidad($idEmpresa, $idProveedor, $rut, $razonSocial) {
    $arr = null;

    try {
      //define llamada procedimiento almacenado
      $sp = "CALL spu_WfProveedorEmpresa_VerificarDuplicidad({idEmpresa}, {idProveedor}, '{rut}', '{razonSocial}');";

      //reemplaza marcas por valores reales
      $sp = str_replace("{idEmpresa}", $idEmpresa, $sp);
      $sp = str_replace("{idProveedor}", $idProveedor, $sp);
      $sp = str_replace("{rut}", $rut, $sp);
      $sp = str_replace("{razonSocial}", $razonSocial, $sp);

      //ejecuta procedimiento
      $arr = Bd::exec($sp);
    } catch (Exception $e) {
      $arr = null;
    }
    return $arr;
  }


//</editor-fold>
}
?>

